MIP
  • Results
52-week current policies
  • Capacity and Generation
  • Capacity Tables
  • Transmission Expansion
  • Emissions
  • Dispatch
  • Capacity Factors
  • Operational Results
  • Total Capacity
  • New-build Capacity
  • Existing Capacity
  • Total Capacity (wide)
  • Regional Capacity
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
/opt/hostedtoolcache/Python/3.10.14/x64/lib/python3.10/site-packages/altair/vegalite/v5/api.py in ?(self, include, exclude)
   2154         # see https://github.com/ipython/ipython/issues/11038
   2155         try:
   2156             dct = self.to_dict()
   2157         except Exception:
-> 2158             utils.display_traceback(in_ipython=True)
   2159             return {}
   2160         else:
   2161             return renderers.get()(dct)

/opt/hostedtoolcache/Python/3.10.14/x64/lib/python3.10/site-packages/altair/vegalite/v5/api.py in ?(self, *args, **kwargs)
   2516             # for easier specification of datum encodings.
   2517             copy = self.copy(deep=False)
   2518             copy.data = core.InlineData(values=[{}])
   2519             return super(Chart, copy).to_dict(*args, **kwargs)
-> 2520         return super().to_dict(*args, **kwargs)

/opt/hostedtoolcache/Python/3.10.14/x64/lib/python3.10/site-packages/altair/vegalite/v5/api.py in ?(self, *args, **kwargs)
    846 
    847         # TopLevelMixin instance does not necessarily have to_dict defined
    848         # but due to how Altair is set up this should hold.
    849         # Too complex to type hint right now
--> 850         dct = super(TopLevelMixin, copy).to_dict(*args, **kwargs)  # type: ignore[misc]
    851 
    852         # TODO: following entries are added after validation. Should they be validated?
    853         if is_top_level:

/opt/hostedtoolcache/Python/3.10.14/x64/lib/python3.10/site-packages/altair/utils/schemapi.py in ?(self, validate, ignore, context)
    792                 k: v for k, v in kwds.items() if k not in list(ignore) + ["shorthand"]
    793             }
    794             if "mark" in kwds and isinstance(kwds["mark"], str):
    795                 kwds["mark"] = {"type": kwds["mark"]}
--> 796             result = _todict(
    797                 kwds,
    798                 context=context,
    799             )

/opt/hostedtoolcache/Python/3.10.14/x64/lib/python3.10/site-packages/altair/utils/schemapi.py in ?(obj, context)
    336         return obj.to_dict(validate=False, context=context)
    337     elif isinstance(obj, (list, tuple, np.ndarray)):
    338         return [_todict(v, context) for v in obj]
    339     elif isinstance(obj, dict):
--> 340         return {k: _todict(v, context) for k, v in obj.items() if v is not Undefined}
    341     elif hasattr(obj, "to_dict"):
    342         return obj.to_dict()
    343     elif isinstance(obj, np.number):

/opt/hostedtoolcache/Python/3.10.14/x64/lib/python3.10/site-packages/altair/utils/schemapi.py in ?(.0)
--> 340 def _todict(obj, context):
    341     """Convert an object to a dict representation."""
    342     if isinstance(obj, SchemaBase):
    343         return obj.to_dict(validate=False, context=context)

/opt/hostedtoolcache/Python/3.10.14/x64/lib/python3.10/site-packages/altair/utils/schemapi.py in ?(obj, context)
    333 def _todict(obj, context):
    334     """Convert an object to a dict representation."""
    335     if isinstance(obj, SchemaBase):
--> 336         return obj.to_dict(validate=False, context=context)
    337     elif isinstance(obj, (list, tuple, np.ndarray)):
    338         return [_todict(v, context) for v in obj]
    339     elif isinstance(obj, dict):

/opt/hostedtoolcache/Python/3.10.14/x64/lib/python3.10/site-packages/altair/utils/schemapi.py in ?(self, validate, ignore, context)
    792                 k: v for k, v in kwds.items() if k not in list(ignore) + ["shorthand"]
    793             }
    794             if "mark" in kwds and isinstance(kwds["mark"], str):
    795                 kwds["mark"] = {"type": kwds["mark"]}
--> 796             result = _todict(
    797                 kwds,
    798                 context=context,
    799             )

/opt/hostedtoolcache/Python/3.10.14/x64/lib/python3.10/site-packages/altair/utils/schemapi.py in ?(obj, context)
    336         return obj.to_dict(validate=False, context=context)
    337     elif isinstance(obj, (list, tuple, np.ndarray)):
    338         return [_todict(v, context) for v in obj]
    339     elif isinstance(obj, dict):
--> 340         return {k: _todict(v, context) for k, v in obj.items() if v is not Undefined}
    341     elif hasattr(obj, "to_dict"):
    342         return obj.to_dict()
    343     elif isinstance(obj, np.number):

/opt/hostedtoolcache/Python/3.10.14/x64/lib/python3.10/site-packages/altair/utils/schemapi.py in ?(.0)
--> 340 def _todict(obj, context):
    341     """Convert an object to a dict representation."""
    342     if isinstance(obj, SchemaBase):
    343         return obj.to_dict(validate=False, context=context)

/opt/hostedtoolcache/Python/3.10.14/x64/lib/python3.10/site-packages/altair/utils/schemapi.py in ?(obj, context)
    333 def _todict(obj, context):
    334     """Convert an object to a dict representation."""
    335     if isinstance(obj, SchemaBase):
--> 336         return obj.to_dict(validate=False, context=context)
    337     elif isinstance(obj, (list, tuple, np.ndarray)):
    338         return [_todict(v, context) for v in obj]
    339     elif isinstance(obj, dict):

/opt/hostedtoolcache/Python/3.10.14/x64/lib/python3.10/site-packages/altair/vegalite/v5/schema/channels.py in ?(self, validate, ignore, context)
     43                 # We still parse it out of the shorthand, but drop it here.
     44                 parsed.pop('type', None)
     45             elif not (type_in_shorthand or type_defined_explicitly):
     46                 if isinstance(context.get('data', None), pd.DataFrame):
---> 47                     raise ValueError(
     48                         'Unable to determine data type for the field "{}";'
     49                         " verify that the field name is not misspelled."
     50                         " If you are referencing a field from a transform,"

ValueError: Unable to determine data type for the field "tech_type"; verify that the field name is not misspelled. If you are referencing a field from a transform, also confirm that the data type is specified correctly.
alt.Chart(...)
  • Total Generation
  • New-build Generation
  • Existing Generation
  • Total Generation (wide)
  • Regional Generation
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
/opt/hostedtoolcache/Python/3.10.14/x64/lib/python3.10/site-packages/altair/vegalite/v5/api.py in ?(self, include, exclude)
   2154         # see https://github.com/ipython/ipython/issues/11038
   2155         try:
   2156             dct = self.to_dict()
   2157         except Exception:
-> 2158             utils.display_traceback(in_ipython=True)
   2159             return {}
   2160         else:
   2161             return renderers.get()(dct)

/opt/hostedtoolcache/Python/3.10.14/x64/lib/python3.10/site-packages/altair/vegalite/v5/api.py in ?(self, *args, **kwargs)
    846 
    847         # TopLevelMixin instance does not necessarily have to_dict defined
    848         # but due to how Altair is set up this should hold.
    849         # Too complex to type hint right now
--> 850         dct = super(TopLevelMixin, copy).to_dict(*args, **kwargs)  # type: ignore[misc]
    851 
    852         # TODO: following entries are added after validation. Should they be validated?
    853         if is_top_level:

/opt/hostedtoolcache/Python/3.10.14/x64/lib/python3.10/site-packages/altair/utils/schemapi.py in ?(self, validate, ignore, context)
    792                 k: v for k, v in kwds.items() if k not in list(ignore) + ["shorthand"]
    793             }
    794             if "mark" in kwds and isinstance(kwds["mark"], str):
    795                 kwds["mark"] = {"type": kwds["mark"]}
--> 796             result = _todict(
    797                 kwds,
    798                 context=context,
    799             )

/opt/hostedtoolcache/Python/3.10.14/x64/lib/python3.10/site-packages/altair/utils/schemapi.py in ?(obj, context)
    336         return obj.to_dict(validate=False, context=context)
    337     elif isinstance(obj, (list, tuple, np.ndarray)):
    338         return [_todict(v, context) for v in obj]
    339     elif isinstance(obj, dict):
--> 340         return {k: _todict(v, context) for k, v in obj.items() if v is not Undefined}
    341     elif hasattr(obj, "to_dict"):
    342         return obj.to_dict()
    343     elif isinstance(obj, np.number):

/opt/hostedtoolcache/Python/3.10.14/x64/lib/python3.10/site-packages/altair/utils/schemapi.py in ?(.0)
--> 340 def _todict(obj, context):
    341     """Convert an object to a dict representation."""
    342     if isinstance(obj, SchemaBase):
    343         return obj.to_dict(validate=False, context=context)

/opt/hostedtoolcache/Python/3.10.14/x64/lib/python3.10/site-packages/altair/utils/schemapi.py in ?(obj, context)
    333 def _todict(obj, context):
    334     """Convert an object to a dict representation."""
    335     if isinstance(obj, SchemaBase):
--> 336         return obj.to_dict(validate=False, context=context)
    337     elif isinstance(obj, (list, tuple, np.ndarray)):
    338         return [_todict(v, context) for v in obj]
    339     elif isinstance(obj, dict):

/opt/hostedtoolcache/Python/3.10.14/x64/lib/python3.10/site-packages/altair/vegalite/v5/api.py in ?(self, *args, **kwargs)
    846 
    847         # TopLevelMixin instance does not necessarily have to_dict defined
    848         # but due to how Altair is set up this should hold.
    849         # Too complex to type hint right now
--> 850         dct = super(TopLevelMixin, copy).to_dict(*args, **kwargs)  # type: ignore[misc]
    851 
    852         # TODO: following entries are added after validation. Should they be validated?
    853         if is_top_level:

/opt/hostedtoolcache/Python/3.10.14/x64/lib/python3.10/site-packages/altair/utils/schemapi.py in ?(self, validate, ignore, context)
    792                 k: v for k, v in kwds.items() if k not in list(ignore) + ["shorthand"]
    793             }
    794             if "mark" in kwds and isinstance(kwds["mark"], str):
    795                 kwds["mark"] = {"type": kwds["mark"]}
--> 796             result = _todict(
    797                 kwds,
    798                 context=context,
    799             )

/opt/hostedtoolcache/Python/3.10.14/x64/lib/python3.10/site-packages/altair/utils/schemapi.py in ?(obj, context)
    336         return obj.to_dict(validate=False, context=context)
    337     elif isinstance(obj, (list, tuple, np.ndarray)):
    338         return [_todict(v, context) for v in obj]
    339     elif isinstance(obj, dict):
--> 340         return {k: _todict(v, context) for k, v in obj.items() if v is not Undefined}
    341     elif hasattr(obj, "to_dict"):
    342         return obj.to_dict()
    343     elif isinstance(obj, np.number):

/opt/hostedtoolcache/Python/3.10.14/x64/lib/python3.10/site-packages/altair/utils/schemapi.py in ?(.0)
--> 340 def _todict(obj, context):
    341     """Convert an object to a dict representation."""
    342     if isinstance(obj, SchemaBase):
    343         return obj.to_dict(validate=False, context=context)

/opt/hostedtoolcache/Python/3.10.14/x64/lib/python3.10/site-packages/altair/utils/schemapi.py in ?(obj, context)
    334     """Convert an object to a dict representation."""
    335     if isinstance(obj, SchemaBase):
    336         return obj.to_dict(validate=False, context=context)
    337     elif isinstance(obj, (list, tuple, np.ndarray)):
--> 338         return [_todict(v, context) for v in obj]
    339     elif isinstance(obj, dict):
    340         return {k: _todict(v, context) for k, v in obj.items() if v is not Undefined}
    341     elif hasattr(obj, "to_dict"):

/opt/hostedtoolcache/Python/3.10.14/x64/lib/python3.10/site-packages/altair/utils/schemapi.py in ?(.0)
--> 338 def _todict(obj, context):
    339     """Convert an object to a dict representation."""
    340     if isinstance(obj, SchemaBase):
    341         return obj.to_dict(validate=False, context=context)

/opt/hostedtoolcache/Python/3.10.14/x64/lib/python3.10/site-packages/altair/utils/schemapi.py in ?(obj, context)
    333 def _todict(obj, context):
    334     """Convert an object to a dict representation."""
    335     if isinstance(obj, SchemaBase):
--> 336         return obj.to_dict(validate=False, context=context)
    337     elif isinstance(obj, (list, tuple, np.ndarray)):
    338         return [_todict(v, context) for v in obj]
    339     elif isinstance(obj, dict):

/opt/hostedtoolcache/Python/3.10.14/x64/lib/python3.10/site-packages/altair/vegalite/v5/api.py in ?(self, *args, **kwargs)
   2516             # for easier specification of datum encodings.
   2517             copy = self.copy(deep=False)
   2518             copy.data = core.InlineData(values=[{}])
   2519             return super(Chart, copy).to_dict(*args, **kwargs)
-> 2520         return super().to_dict(*args, **kwargs)

/opt/hostedtoolcache/Python/3.10.14/x64/lib/python3.10/site-packages/altair/vegalite/v5/api.py in ?(self, *args, **kwargs)
    846 
    847         # TopLevelMixin instance does not necessarily have to_dict defined
    848         # but due to how Altair is set up this should hold.
    849         # Too complex to type hint right now
--> 850         dct = super(TopLevelMixin, copy).to_dict(*args, **kwargs)  # type: ignore[misc]
    851 
    852         # TODO: following entries are added after validation. Should they be validated?
    853         if is_top_level:

/opt/hostedtoolcache/Python/3.10.14/x64/lib/python3.10/site-packages/altair/utils/schemapi.py in ?(self, validate, ignore, context)
    792                 k: v for k, v in kwds.items() if k not in list(ignore) + ["shorthand"]
    793             }
    794             if "mark" in kwds and isinstance(kwds["mark"], str):
    795                 kwds["mark"] = {"type": kwds["mark"]}
--> 796             result = _todict(
    797                 kwds,
    798                 context=context,
    799             )

/opt/hostedtoolcache/Python/3.10.14/x64/lib/python3.10/site-packages/altair/utils/schemapi.py in ?(obj, context)
    336         return obj.to_dict(validate=False, context=context)
    337     elif isinstance(obj, (list, tuple, np.ndarray)):
    338         return [_todict(v, context) for v in obj]
    339     elif isinstance(obj, dict):
--> 340         return {k: _todict(v, context) for k, v in obj.items() if v is not Undefined}
    341     elif hasattr(obj, "to_dict"):
    342         return obj.to_dict()
    343     elif isinstance(obj, np.number):

/opt/hostedtoolcache/Python/3.10.14/x64/lib/python3.10/site-packages/altair/utils/schemapi.py in ?(.0)
--> 340 def _todict(obj, context):
    341     """Convert an object to a dict representation."""
    342     if isinstance(obj, SchemaBase):
    343         return obj.to_dict(validate=False, context=context)

/opt/hostedtoolcache/Python/3.10.14/x64/lib/python3.10/site-packages/altair/utils/schemapi.py in ?(obj, context)
    333 def _todict(obj, context):
    334     """Convert an object to a dict representation."""
    335     if isinstance(obj, SchemaBase):
--> 336         return obj.to_dict(validate=False, context=context)
    337     elif isinstance(obj, (list, tuple, np.ndarray)):
    338         return [_todict(v, context) for v in obj]
    339     elif isinstance(obj, dict):

/opt/hostedtoolcache/Python/3.10.14/x64/lib/python3.10/site-packages/altair/utils/schemapi.py in ?(self, validate, ignore, context)
    792                 k: v for k, v in kwds.items() if k not in list(ignore) + ["shorthand"]
    793             }
    794             if "mark" in kwds and isinstance(kwds["mark"], str):
    795                 kwds["mark"] = {"type": kwds["mark"]}
--> 796             result = _todict(
    797                 kwds,
    798                 context=context,
    799             )

/opt/hostedtoolcache/Python/3.10.14/x64/lib/python3.10/site-packages/altair/utils/schemapi.py in ?(obj, context)
    336         return obj.to_dict(validate=False, context=context)
    337     elif isinstance(obj, (list, tuple, np.ndarray)):
    338         return [_todict(v, context) for v in obj]
    339     elif isinstance(obj, dict):
--> 340         return {k: _todict(v, context) for k, v in obj.items() if v is not Undefined}
    341     elif hasattr(obj, "to_dict"):
    342         return obj.to_dict()
    343     elif isinstance(obj, np.number):

/opt/hostedtoolcache/Python/3.10.14/x64/lib/python3.10/site-packages/altair/utils/schemapi.py in ?(.0)
--> 340 def _todict(obj, context):
    341     """Convert an object to a dict representation."""
    342     if isinstance(obj, SchemaBase):
    343         return obj.to_dict(validate=False, context=context)

/opt/hostedtoolcache/Python/3.10.14/x64/lib/python3.10/site-packages/altair/utils/schemapi.py in ?(obj, context)
    333 def _todict(obj, context):
    334     """Convert an object to a dict representation."""
    335     if isinstance(obj, SchemaBase):
--> 336         return obj.to_dict(validate=False, context=context)
    337     elif isinstance(obj, (list, tuple, np.ndarray)):
    338         return [_todict(v, context) for v in obj]
    339     elif isinstance(obj, dict):

/opt/hostedtoolcache/Python/3.10.14/x64/lib/python3.10/site-packages/altair/vegalite/v5/schema/channels.py in ?(self, validate, ignore, context)
     43                 # We still parse it out of the shorthand, but drop it here.
     44                 parsed.pop('type', None)
     45             elif not (type_in_shorthand or type_defined_explicitly):
     46                 if isinstance(context.get('data', None), pd.DataFrame):
---> 47                     raise ValueError(
     48                         'Unable to determine data type for the field "{}";'
     49                         " verify that the field name is not misspelled."
     50                         " If you are referencing a field from a transform,"

ValueError: Unable to determine data type for the field "tech_type"; verify that the field name is not misspelled. If you are referencing a field from a transform, also confirm that the data type is specified correctly.
alt.FacetChart(...)
  • Total Start Existing Capacity
  • Total End Existing Capacity
  • Regional End Existing Capacity
tech_type planning_year GenX SWITCH TEMOA
Battery 2027 21854 21894 21847
Battery 2030 21719 21818 21528
Battery 2035 20535 21020 21513
Battery 2040 84 84 313
Battery 2045 0 nan 313
Battery 2050 0 nan 313
Coal 2027 157337 163248 157337
Coal 2030 142458 143876 154564
Coal 2035 122365 125937 140822
Coal 2040 82414 88262 116413
Coal 2045 57333 64898 81742
Coal 2050 30232 31478 54813
Distributed Solar 2027 47556 47886 47886
Distributed Solar 2030 72304 72744 47886
Distributed Solar 2035 96511 97023 72744
Distributed Solar 2040 102759 103282 97023
Distributed Solar 2045 107818 108374 103282
Distributed Solar 2050 116123 116713 108372
Geothermal 2027 676 1333 825
Geothermal 2030 621 1275 825
Geothermal 2035 591 1189 754
Geothermal 2040 398 795 542
Geothermal 2045 217 496 390
Geothermal 2050 100 243 45
Hydro 2027 94746 97523 94302
Hydro 2030 92716 95785 93747
Hydro 2035 91778 94032 91782
Hydro 2040 89100 91586 90936
Hydro 2045 84874 87237 88435
Hydro 2050 81492 84569 84321
Natural Gas CC 2027 306785 315077 306786
Natural Gas CC 2030 305219 313442 303973
Natural Gas CC 2035 300271 309829 302423
Natural Gas CC 2040 297744 307611 297989
Natural Gas CC 2045 295809 305929 295952
Natural Gas CC 2050 287607 301379 294080
Natural Gas CT 2027 140564 140861 140562
Natural Gas CT 2030 139354 139627 139068
Natural Gas CT 2035 136588 137335 137611
Natural Gas CT 2040 130481 132113 134341
Natural Gas CT 2045 119365 123239 129728
Natural Gas CT 2050 95279 110178 118996
Nuclear 2027 97038 97038 97038
Nuclear 2030 97038 97038 96068
Nuclear 2035 97038 97038 96068
Nuclear 2040 97038 97038 96068
Nuclear 2045 97038 97038 96068
Nuclear 2050 94298 96414 96068
Solar 2027 115692 115696 115693
Solar 2030 115685 115685 115693
Solar 2035 115677 115678 115685
Solar 2040 115288 115519 115677
Solar 2045 103532 106893 115183
Solar 2050 69624 80234 102942
Wind 2027 155394 152412 155395
Wind 2030 154608 154641 155394
Wind 2035 148441 150601 154610
Wind 2040 117636 122448 148457
Wind 2045 83551 92075 117061
Wind 2050 37428 51820 82636
tech_type planning_year GenX SWITCH TEMOA
Battery 2027 21854 21894 21634
Battery 2030 21719 21818 21513
Battery 2035 20535 21020 20667
Battery 2040 84 84 313
Battery 2045 0 nan 313
Battery 2050 0 nan 313
Coal 2027 157337 163248 155850
Coal 2030 142458 143876 141152
Coal 2035 122365 125937 121715
Coal 2040 82414 88262 82188
Coal 2045 57333 64898 57281
Coal 2050 30232 31478 30205
Distributed Solar 2027 47556 47886 47886
Distributed Solar 2030 72304 72744 72744
Distributed Solar 2035 96511 97023 97023
Distributed Solar 2040 102759 103282 103282
Distributed Solar 2045 107818 108374 108372
Distributed Solar 2050 116123 116713 116702
Geothermal 2027 676 1333 825
Geothermal 2030 621 1275 754
Geothermal 2035 591 1189 717
Geothermal 2040 398 795 390
Geothermal 2045 217 496 227
Geothermal 2050 100 243 45
Hydro 2027 94746 97523 93747
Hydro 2030 92716 95785 91782
Hydro 2035 91778 94032 90936
Hydro 2040 89100 91586 88435
Hydro 2045 84874 87237 84321
Hydro 2050 81492 84569 81092
Natural Gas CC 2027 306785 315077 303973
Natural Gas CC 2030 305219 313442 302423
Natural Gas CC 2035 300271 309829 297989
Natural Gas CC 2040 297744 307611 295952
Natural Gas CC 2045 295809 305929 294080
Natural Gas CC 2050 287607 301379 286428
Natural Gas CT 2027 140564 140861 139198
Natural Gas CT 2030 139354 139627 137932
Natural Gas CT 2035 136588 137335 135305
Natural Gas CT 2040 130481 132113 129728
Natural Gas CT 2045 119365 123239 119116
Natural Gas CT 2050 95279 110178 95161
Nuclear 2027 97038 97038 96068
Nuclear 2030 97038 97038 96068
Nuclear 2035 97038 97038 96068
Nuclear 2040 97038 97038 96068
Nuclear 2045 97038 97038 96068
Nuclear 2050 94298 96414 93377
Solar 2027 115692 115696 115693
Solar 2030 115685 115685 115685
Solar 2035 115677 115678 115677
Solar 2040 115288 115519 115284
Solar 2045 103532 106893 103440
Solar 2050 69624 80234 69409
Wind 2027 155394 153912 155394
Wind 2030 154608 154641 154610
Wind 2035 148441 150601 148457
Wind 2040 117636 122448 117643
Wind 2045 83551 92075 83506
Wind 2050 37428 51820 37373
agg_zone tech_type resource_name planning_year GenX SWITCH TEMOA
Loading ITables v2.1.4 from the internet... (need help?)
  • Expansion by line
  • Total expansion
  • Total expansion map
  • Emissions
  • Emissions intensity
  • 2030 Dispatch
  • 2040 Dispatch
  • 2050 Dispatch
  • 2030 Wind Dispatch
  • 2040 Wind Dispatch
  • 2050 Wind Dispatch
  • Battery
  • Solar
  • Wind
  • Natural Gas CC
  • Natural Gas CT
  • Hydro
  • Operational costs
  • Operational NSE
  • Generation
  • Power cost